iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
AI/ ML & Data

菜就多練之我叫小賀逃離DS新手村系列 第 15

Day 15 美味佳餚-今晚我想來點數據前菜

  • 分享至 

  • xImage
  •  

資料蒐集(Data Collection)🐭

古人云:數據分析就像做菜,如果挑選的食材不新鮮,怎麼可能煮出美味佳餚?(Gordon Ramsay或江振誠好像可以哈哈)

在大學期間,我們教授常說在進行數據分析最怕就是:「Garbage in, garbage out」,這句話聽起來不正經但實際上超辣眼睛

結論就是好的數據可以讓我們少走很多歪路哈哈

  • 數據蒐集的來源
    • 開源資料集(例如:Kaggle或Hugging Face)
    • 網路爬蟲(Web Crawler)
    • 調用API
    • 靠自己(自己蒐集、公司數據)

溫馨提醒:透過網路爬蟲獲得的資料在使用上必須遵守法律


探索性分析(Exploratory Data Analysis, EDA)🐮

當我們在進行數據分析前,我們必須先了解我們所獲得的數據的一些基本狀態,如:是否有缺失值、欄位的類別、基本的統計訊息等

這裡示範如何透過pandas進行EDA:

import pandas as pd
import numpy as np

data = pd.read_csv('/content/Titanic.csv')

data.head() 

data.info()

data.describe()
  • pd.read_csv(file_path)讀取資料
  • data.head() 用來看前五筆資料,對資料內容有一個初步的了解
  • data.info() 用來看資料欄位的類別和是否有缺失值
  • data.describe() 用來看資料欄位的統計訊息,包括:平均值、標準差、最大值、最小值等

資料預處理(Data Preprocessing)🐯

在進行分析前,對原始資料進行清理、轉換和整理的過程。

資料清洗(Data Cleaning)

清理資料集中的異常值和缺失值

資料整合(Data Integration)

將不同來源的數據集進行合併。

資料轉換(Data Transformation)

將數據轉換成適合用來分析的格式,主要的內容包括:

  • 特徵縮放(Feature Scaling)
    • Normalization
    • Standardization
  • 特徵抽取(Feature Extraction)
    • PCA
  • 類別編碼(Categorical Encoding)
    • One-Hot Encoding
    • Label Encoding
  • 資料離散化(Discretization)

實戰演練 🔥

程式碼如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 建立資料集
data = {
    'A': [1, 2, np.nan, 4, 5, np.nan, 7, 8, 9, 10],
    'B': [5, 15, 20, np.nan, 50, 60, 70, 80, 90, 100],
    'C': [100, 200, 300, 400, 500, 600, 700, 800, 900, 10000]
}

df = pd.DataFrame(data)

# 查看數據集的基本情況
print("原始數據:")
print(df)

# 1. 處理缺失值:用平均值填補缺失值
df['A'].fillna(df['A'].mean(), inplace=True)
df['B'].fillna(df['B'].mean(), inplace=True)

print("\n填補缺失值後的數據:")
print(df)

# 2. 檢測異常值:使用box plot
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 1)
plt.boxplot(df['A'])
plt.title('Boxplot of A')
plt.subplot(1, 2, 2)
plt.boxplot(df['C'])
plt.title('Boxplot of C (With Outlier)')
plt.show()

原始資料跟資料清洗後的資料如下:

https://ithelp.ithome.com.tw/upload/images/20240819/201557132bqzYnfqqB.jpg

Box plot結果如下:

https://ithelp.ithome.com.tw/upload/images/20240819/20155713AaXXEXVFXM.png

  • 根據這個boxplot,我們觀察到欄位C有一個明顯的outlier,後續可以決定是否需要處理這個異常值,比如將其刪除或進行其他處理。

題外話😂

騎車回家最肚爛就是快到家的時候突然來一陣超爆大的雨...


上一篇
Day 14 意猶未盡-優化器啟動
下一篇
Day 16 眼見為實-善用視覺記憶
系列文
菜就多練之我叫小賀逃離DS新手村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言